#pragma once
#include <memory>
#define BIT(x) (1 << x)

#ifdef ORANGE_ENABLE_ASSERT
	#define ORANGE_ASSERT(x,...){ if(!(x)){ ORANGE_ERROR("Assertion Failed {0}",__VA_ARGS__); __debugbreak(); } }
	#define ORANGE_CORE_ASSERT(x,...){ if(!(x)){ ORANGE_CORE_ERROR("Assertion Failed {0}",__VA_ARGS__); __debugbreak(); } }
#else
	#define ORANGE_ASSERT(x,...)
	#define ORANGE_CORE_ASSERT(x,...)
#endif // ORANGE_ENABLE_ASSETS

namespace Orange
{
    template <typename T>
    using Scope = std::unique_ptr<T>;

    template <typename T>
    using Ref = std::shared_ptr<T>;

}